generator function
呼び出すと、generatorが返ってくる
通常の関数では、その定義の本体に書いたコードは関数末尾に到達するか、どこかでreturn文に到達するまで実行が続けられる
ジェネレータ関数の本体に書いたコードは、そのgeneratorの__next__()が呼び出されることで実行される その実行はyield式に到達するまで続けられ、yield式が実行されると、それに渡された値が呼び出し側に戻され、そこでコードの実行が一時停止される
ローカル変数の値、実行位置などが保存される
再び__next__()が呼び出されると、次の行から実行が再開されて、再びyield式に到達するまで実行が続けられる